home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / clue.lha / clue / examples / old / doc.text < prev    next >
Text File  |  1989-07-12  |  7KB  |  195 lines

  1. -*- Mode:Text -*-
  2.  
  3.  
  4.                               CLUE Examples
  5.  
  6.                                LaMott Oren
  7.                              Suzanne McBride
  8.                              Craig Timmerman
  9.  
  10.                      Texas Instruments Incorporated
  11.  
  12.                               Version 1.15
  13.                             September 1, 1988
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.         Copyright 1988, Texas Instruments Incorporated
  21.  
  22.       Permission is granted to any individual or institution
  23.       to use, copy, modify, and distribute this document,
  24.       provided that this complete copyright and permission
  25.       notice is maintained, intact, in all copies and
  26.       supporting documentation.  Texas Instruments
  27.       Incorporated makes no representations about the
  28.       suitability of the software described herein for any
  29.       purpose.  It is provided "as is" without express or
  30.       implied warranty.
  31.  
  32.  
  33.  
  34. MENU                                                    Contact Class
  35.  
  36.    MENU is a composite contact whose geometry manager puts children in a
  37.    single vertical column (it may be extended someday to do multi-column
  38.    menus).
  39.    
  40.    MENU has a ORDERING slot of type (OR (MEMBER :first :last) function)
  41.    for determining the menu items (children).  The default is :last,
  42.    which puts new children at the bottom of the menu.  Using :first will
  43.    reverse the order of menu items.  ORDRING may be a "lessp" predicate,
  44.    called with 2 parameters, a child to add, and some other child of the
  45.    menu (similar to the predicate passed to the CL SORT function).
  46.    
  47.    MENU defaults border-width to 0, and cursor to the "arrow" cursor.
  48.  
  49.  
  50. MULTIPLE-MENU                                           Contact Class
  51.  
  52.    MULTIPLE-MENU is a menu that can have more then one item selected at
  53.    once. It simply alters event-translations in add-child.
  54.  
  55.  
  56. SPRING-LOADED-MENU                                      Contact Class
  57.  
  58.    SPRING-LOADED-MENU is a menu where a mouse button is always pressed
  59.    and an item is selected when the button is released.  It simply
  60.    alters event-translations in add-child.
  61.  
  62.  
  63. LABEL                                                   Contact Class
  64.  
  65.    LABEL is a contact that displays a one line string in a single font
  66.    with different styles and justification.  It has the following
  67.    options:
  68.    (title :initform nil :type stringable) ;; Defaults to name string
  69.    (style :initform :normal :type (member :normal :box :reverse :box-reverse))
  70.    (justify :initform :center :type (member :left :center :right)
  71.             :accessor button-justify)
  72.    (font :type font :initform "fg-18")
  73.    (foreground :type pixel)
  74.    (border-width :type card16 :initform 0)
  75.    (inside-border-width :initform 3 :type integer
  76.                         :accessor inside-border-width)
  77.    Plus all options inherited from CONTACT, including
  78.    :documentation :background :border :cursor :sensitive :name :callbacks
  79.  
  80.    When style is :BOX or :BOX-REVERSE, a border INSIDE-BORDER-WIDTH is
  81.    displayed around the label.
  82.  
  83.  
  84. BUTTON                                                  Contact Class
  85.  
  86.    BUTTON is a label with event-translations for setting style depending
  87.    on pointer enter/leave and button press/release events.  It has the
  88.    following options in addition to those for LABEL:
  89.   (command-key :initform nil :type (or null character))
  90.   (selected :initform nil :type boolean :accessor selected)
  91.   (highlighted :initform nil :type boolean :accessor highlighted)
  92.   (select :initform nil :type (or null symbol function list))
  93.   (doit   :initform nil :type (or null symbol function list))
  94.   (key    :initform nil :type (OR null character list))
  95.  
  96.   COMMAND-KEY is the character that will cause the button's SELECT
  97.               callback to be invoked.
  98.   SELECTED    is T when the button is selected (button-press)
  99.   HIGHLIGHTED is T when the button is highlighted (enter-notify)
  100.   SELECT      defines a :select callback in the button's callback
  101.               list, if one isn't already defined.
  102.   DOIT        defines a :doit callback in the button's callback
  103.               list, if one isn't already defined.
  104.  
  105.   BUTTON has the following callbacks.  All callbacks are called with the
  106.   button as a parameter.
  107.   :SELECT     Called when the button enters the "select" state.
  108.   :DOIT       When button is a part of a multiple-menu, the :DOIT
  109.               callback is called on all selected buttons.
  110.   :CASCADE    Called when the pointer slides off the right edge of the
  111.               button.
  112.  
  113.  
  114. MENU-CHOOSE                                             Function
  115.  
  116.    (defun menu-choose (parent alist &rest options
  117.                        &key label
  118.                             (handler #'menu-exit)
  119.                             (menu-type 'menu)
  120.                             (item-type 'button)
  121.                             (justify :center)
  122.                             (font "fg-18")
  123.                        &allow-other-keys)
  124.  
  125.   Build a menu on parent with items from alist.  Options include any
  126.   allowable parameter to make-contact for the MENU-TYPE class.
  127.   ITEM-TYPE is the default menu-item class, HANDLER is the default
  128.   button :SELECT callback function, JUSTIFY is the default item :JUSTIFY
  129.   parameter, and FONT is the default item :FONT parameter.
  130.  
  131.   Alist entries are (name . options) where NAME is the name symbol for
  132.   the menu-item, and options are keyword options to make-contact on the
  133.   ITEM-TYPE class.
  134.  
  135.  
  136. POPUP-CHOOSE                                            Function
  137.  
  138.   (defun popup-choose (alist &rest options
  139.         &key parent
  140.              x y
  141.              border
  142.              spring-loaded
  143.         &allow-other-keys)
  144.  
  145.    Popup a menu on parent from alist.
  146.    Returns NIL if aborted (pointer moved outside the menu), else the
  147.    value returned by the :SELECT callback of the selected button.
  148.  
  149.    PARENT is the window to pop-up the menu on top-of (the menu will be a
  150.           top-level window of the same root as parent).  When PARENT is
  151.           missing or NIL, it defaults to the value of *parent*.  This
  152.           makes popup-choose a possible button callback for implementing
  153.           cascading menus.
  154.    X & Y  are the coordinates of the upper-left hand corner of the popup
  155.           window.  They default to having the menu centered over the
  156.           mouse, or when parent is unspecified, to the right of the
  157.           mouse.
  158.    BORDER The border color for the popup window
  159.    SPRING-LOADED  a boolean indicating whether or not a spring-loaded
  160.                   menu is wanted.
  161.  
  162.    popup-choose calls menu-choose with alist and options.
  163.  
  164.  
  165. POPUP-CHOOSE                                            Function
  166.  
  167.    Same as popup-choose, except SPRING-LOADED is T
  168.  
  169.  
  170. CONTACT-ROOT-POSITION                                   Function
  171.  
  172.    (defun contact-root-position (contact)
  173.      "Return the position of CONTACT relative to the root."
  174.      (declare (type contact contact)
  175.               (values x y)))
  176.  
  177.  
  178. POSITION-OVER-MOUSE                                     Function
  179.  
  180.    (defun position-over-mouse (contact)
  181.      "Position CONTACT centered over the mouse.
  182.     Ensures CONTACT remains inside its parent."
  183.      (declare (type contact contact)))
  184.  
  185.  
  186. POSITION-RIGHT-OF                                       Function
  187.  
  188.    (defun position-right-of (contact relative-to)
  189.      "Position CONTACT (usually a cascading menu) to the right of
  190.      RELATIVE-TO (usually CONTACT's parent).
  191.      CONTACT is constrained to be within the root window."
  192.      (declare (type contact contact relative-to)))
  193.    
  194.  
  195.